package com.ruoyi.orders.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 订单详情对象 t_order_detail
 * 
 * @author ruoyi
 * @date 2025-08-19
 */
public class TOrderDetail extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单详情ID */
    private Long detailId;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    /** 城市 */
    @Excel(name = "城市")
    private String city;

    /** 车辆级别 */
    @Excel(name = "车辆级别")
    private String carLevel;

    /** 上车地点 */
    @Excel(name = "上车地点")
    private String startLocation;

    /** 下车地点 */
    @Excel(name = "下车地点")
    private String endLocation;

    /** 订单金额（元） */
    @Excel(name = "订单金额", readConverterExp = "元=")
    private BigDecimal serviceFee;

    /** 服务时长（分） */
    @Excel(name = "服务时长", readConverterExp = "分=")
    private Long serviceDuration;

    /** 服务里程（公里） */
    @Excel(name = "服务里程", readConverterExp = "公=里")
    private BigDecimal serviceMileage;

    /** 下单来源 */
    @Excel(name = "下单来源")
    private String orderSource;

    /** 支付类型 */
    @Excel(name = "支付类型")
    private String paymentType;

    /** 订车人 */
    @Excel(name = "订车人")
    private String ordererName;

    /** 乘车人 */
    @Excel(name = "乘车人")
    private String passengerName;

    /** 司机 */
    @Excel(name = "司机")
    private String driverName;

    /** 司机手机号 */
    @Excel(name = "司机手机号")
    private String driverPhone;

    /** 车牌号 */
    @Excel(name = "车牌号")
    private String licensePlateNumber;

    /** 下单时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "下单时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderTime;

    /** 用车时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "用车时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date useCarTime;

    /** 司机出发时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "司机出发时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date driverDepartureTime;

    /** 司机到达时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "司机到达时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date driverArrivalTime;

    /** 服务开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "服务开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date serviceStartTime;

    /** 服务结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "服务结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date serviceEndTime;

    /** 支付完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentCompleteTime;

    /** 取消时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelTime;

    /** 起步里程（公里） */
    @Excel(name = "起步里程", readConverterExp = "公=里")
    private BigDecimal baseMileage;

    /** 起步费（元） */
    @Excel(name = "起步费", readConverterExp = "元=")
    private BigDecimal baseFee;

    /** 时长费（元） */
    @Excel(name = "时长费", readConverterExp = "元=")
    private BigDecimal overtimeFee;

    /** 过站超时费（元） */
    @Excel(name = "过站超时费", readConverterExp = "元=")
    private BigDecimal overmileageFee;

    /** 夜间服务费（元） */
    @Excel(name = "夜间服务费", readConverterExp = "元=")
    private BigDecimal waitingFee;

    /** 停车费（元） */
    @Excel(name = "停车费", readConverterExp = "元=")
    private BigDecimal parkingFee;

    /** 其他（元） */
    @Excel(name = "其他", readConverterExp = "元=")
    private BigDecimal otherFee;

    /** 优惠券金额（元） */
    @Excel(name = "优惠券金额", readConverterExp = "元=")
    private BigDecimal couponAmount;

    /** 总计（元） */
    @Excel(name = "总计", readConverterExp = "元=")
    private BigDecimal totalAmount;

    /** 乘客备注 */
    @Excel(name = "乘客备注")
    private String customerRemark;

    /** 评分：1 - 5 星 */
    @Excel(name = "评分：1 - 5 星")
    private Long rating;

    /** 评价内容 */
    @Excel(name = "评价内容")
    private String commentContent;

    public void setDetailId(Long detailId) 
    {
        this.detailId = detailId;
    }

    public Long getDetailId() 
    {
        return detailId;
    }

    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }

    public void setCity(String city) 
    {
        this.city = city;
    }

    public String getCity() 
    {
        return city;
    }

    public void setCarLevel(String carLevel) 
    {
        this.carLevel = carLevel;
    }

    public String getCarLevel() 
    {
        return carLevel;
    }

    public void setStartLocation(String startLocation) 
    {
        this.startLocation = startLocation;
    }

    public String getStartLocation() 
    {
        return startLocation;
    }

    public void setEndLocation(String endLocation) 
    {
        this.endLocation = endLocation;
    }

    public String getEndLocation() 
    {
        return endLocation;
    }

    public void setServiceFee(BigDecimal serviceFee) 
    {
        this.serviceFee = serviceFee;
    }

    public BigDecimal getServiceFee() 
    {
        return serviceFee;
    }

    public void setServiceDuration(Long serviceDuration) 
    {
        this.serviceDuration = serviceDuration;
    }

    public Long getServiceDuration() 
    {
        return serviceDuration;
    }

    public void setServiceMileage(BigDecimal serviceMileage) 
    {
        this.serviceMileage = serviceMileage;
    }

    public BigDecimal getServiceMileage() 
    {
        return serviceMileage;
    }

    public void setOrderSource(String orderSource) 
    {
        this.orderSource = orderSource;
    }

    public String getOrderSource() 
    {
        return orderSource;
    }

    public void setPaymentType(String paymentType) 
    {
        this.paymentType = paymentType;
    }

    public String getPaymentType() 
    {
        return paymentType;
    }

    public void setOrdererName(String ordererName) 
    {
        this.ordererName = ordererName;
    }

    public String getOrdererName() 
    {
        return ordererName;
    }

    public void setPassengerName(String passengerName) 
    {
        this.passengerName = passengerName;
    }

    public String getPassengerName() 
    {
        return passengerName;
    }

    public void setDriverName(String driverName) 
    {
        this.driverName = driverName;
    }

    public String getDriverName() 
    {
        return driverName;
    }

    public void setDriverPhone(String driverPhone) 
    {
        this.driverPhone = driverPhone;
    }

    public String getDriverPhone() 
    {
        return driverPhone;
    }

    public void setLicensePlateNumber(String licensePlateNumber) 
    {
        this.licensePlateNumber = licensePlateNumber;
    }

    public String getLicensePlateNumber() 
    {
        return licensePlateNumber;
    }

    public void setOrderTime(Date orderTime) 
    {
        this.orderTime = orderTime;
    }

    public Date getOrderTime() 
    {
        return orderTime;
    }

    public void setUseCarTime(Date useCarTime) 
    {
        this.useCarTime = useCarTime;
    }

    public Date getUseCarTime() 
    {
        return useCarTime;
    }

    public void setDriverDepartureTime(Date driverDepartureTime) 
    {
        this.driverDepartureTime = driverDepartureTime;
    }

    public Date getDriverDepartureTime() 
    {
        return driverDepartureTime;
    }

    public void setDriverArrivalTime(Date driverArrivalTime) 
    {
        this.driverArrivalTime = driverArrivalTime;
    }

    public Date getDriverArrivalTime() 
    {
        return driverArrivalTime;
    }

    public void setServiceStartTime(Date serviceStartTime) 
    {
        this.serviceStartTime = serviceStartTime;
    }

    public Date getServiceStartTime() 
    {
        return serviceStartTime;
    }

    public void setServiceEndTime(Date serviceEndTime) 
    {
        this.serviceEndTime = serviceEndTime;
    }

    public Date getServiceEndTime() 
    {
        return serviceEndTime;
    }

    public void setPaymentCompleteTime(Date paymentCompleteTime) 
    {
        this.paymentCompleteTime = paymentCompleteTime;
    }

    public Date getPaymentCompleteTime() 
    {
        return paymentCompleteTime;
    }

    public void setCancelTime(Date cancelTime) 
    {
        this.cancelTime = cancelTime;
    }

    public Date getCancelTime() 
    {
        return cancelTime;
    }

    public void setBaseMileage(BigDecimal baseMileage) 
    {
        this.baseMileage = baseMileage;
    }

    public BigDecimal getBaseMileage() 
    {
        return baseMileage;
    }

    public void setBaseFee(BigDecimal baseFee) 
    {
        this.baseFee = baseFee;
    }

    public BigDecimal getBaseFee() 
    {
        return baseFee;
    }

    public void setOvertimeFee(BigDecimal overtimeFee) 
    {
        this.overtimeFee = overtimeFee;
    }

    public BigDecimal getOvertimeFee() 
    {
        return overtimeFee;
    }

    public void setOvermileageFee(BigDecimal overmileageFee) 
    {
        this.overmileageFee = overmileageFee;
    }

    public BigDecimal getOvermileageFee() 
    {
        return overmileageFee;
    }

    public void setWaitingFee(BigDecimal waitingFee) 
    {
        this.waitingFee = waitingFee;
    }

    public BigDecimal getWaitingFee() 
    {
        return waitingFee;
    }

    public void setParkingFee(BigDecimal parkingFee) 
    {
        this.parkingFee = parkingFee;
    }

    public BigDecimal getParkingFee() 
    {
        return parkingFee;
    }

    public void setOtherFee(BigDecimal otherFee) 
    {
        this.otherFee = otherFee;
    }

    public BigDecimal getOtherFee() 
    {
        return otherFee;
    }

    public void setCouponAmount(BigDecimal couponAmount) 
    {
        this.couponAmount = couponAmount;
    }

    public BigDecimal getCouponAmount() 
    {
        return couponAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setCustomerRemark(String customerRemark) 
    {
        this.customerRemark = customerRemark;
    }

    public String getCustomerRemark() 
    {
        return customerRemark;
    }

    public void setRating(Long rating) 
    {
        this.rating = rating;
    }

    public Long getRating() 
    {
        return rating;
    }

    public void setCommentContent(String commentContent) 
    {
        this.commentContent = commentContent;
    }

    public String getCommentContent() 
    {
        return commentContent;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("detailId", getDetailId())
            .append("orderId", getOrderId())
            .append("city", getCity())
            .append("carLevel", getCarLevel())
            .append("startLocation", getStartLocation())
            .append("endLocation", getEndLocation())
            .append("serviceFee", getServiceFee())
            .append("serviceDuration", getServiceDuration())
            .append("serviceMileage", getServiceMileage())
            .append("orderSource", getOrderSource())
            .append("paymentType", getPaymentType())
            .append("ordererName", getOrdererName())
            .append("passengerName", getPassengerName())
            .append("driverName", getDriverName())
            .append("driverPhone", getDriverPhone())
            .append("licensePlateNumber", getLicensePlateNumber())
            .append("orderTime", getOrderTime())
            .append("useCarTime", getUseCarTime())
            .append("driverDepartureTime", getDriverDepartureTime())
            .append("driverArrivalTime", getDriverArrivalTime())
            .append("serviceStartTime", getServiceStartTime())
            .append("serviceEndTime", getServiceEndTime())
            .append("paymentCompleteTime", getPaymentCompleteTime())
            .append("cancelTime", getCancelTime())
            .append("baseMileage", getBaseMileage())
            .append("baseFee", getBaseFee())
            .append("overtimeFee", getOvertimeFee())
            .append("overmileageFee", getOvermileageFee())
            .append("waitingFee", getWaitingFee())
            .append("parkingFee", getParkingFee())
            .append("otherFee", getOtherFee())
            .append("couponAmount", getCouponAmount())
            .append("totalAmount", getTotalAmount())
            .append("customerRemark", getCustomerRemark())
            .append("rating", getRating())
            .append("commentContent", getCommentContent())
            .toString();
    }
}
